本文使用技术介绍 Dubbo 3.0.3 Springboot 2.5.5 文中代码已删减,具体代码位置见文末。
本文目标
快速构建 Springboot 应用,并继承Dubbo。
提供一个服务者,一个消费者。 在浏览器中请求消费者服务, 消费者服务调用 服务提供者,返回 响应。
创建项目

创建服务提供者
在chapter02-provider 这个 module 下,编写了两个 sub module. chapter02-provider-api 表示对外提供的RPC接口。 chapter02-provider-impl 表示 RPC接口的实现。
目录结构如下:

chapter02-provider-api
引入pom文件
本模块下无需改动,使用IDEA生成的即可。具体代码见文末
定义RPC接口
/**
* 服务者提供的接口规范
*
* @author fangjiaxiaobai
* @date 2021-10-13 20:44
*/
public interface IProviderService {
/**
* 演示调用demo
*
* @param name 入参,随即返回
* @return "hello, {name} . I am dubbo."
*/
String sayHello(String name);
}
这样 provider-api 服务就配置完成了。
chapter02-provider-impl
引入 pom文件
<!-- 服务提供者的RPC接口 -->
<dependency>
<groupId>com.fxb</groupId>
<artifactId>chapter02-provider-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- 引入Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>3.0.3</version>
<scope>compile</scope>
</dependency>
配置application.yml
dubbo:
application:
#application-name
name: springboot-multicast-provider
id: springboot-multicast-provider
registry:
# 以广播的协议进行发布.
address: multicast://224.5.6.7:1234
id: registry
protocol:
name: dubbo
port: 20880
server:
port: 8080
实现服务提供者的业务逻辑
即 实现RPC接口。
/**
* sayHello 的具体实现
*
* @author fangjiaxiaobai
* @date 2021-10-13 20:47
*/
@DubboService
public class ProviderServiceImpl implements IProviderService {
@Override public String sayHello(String name) {
return String.format("hello, %s. I am dubbo.", name);
}
}
添加Dubbo注解
@SpringBootApplication
// 集成Dubbo
@EnableDubbo
public class Chapter02ProviderImplApplication {
public static void main(String[] args) {
SpringApplication.run(Chapter02ProviderImplApplication.class, args);
}
}
我们启动服务.可以看到:

这样服务提供者就启动成功了。
创建服务消费者
消费者的目录结构如下:

引入maven依赖
<!-- 支持dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- 服务提供者的RPC接口 -->
<dependency>
<groupId>com.fxb</groupId>
<artifactId>chapter02-provider-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
配置application.yml
dubbo:
application:
#application-name
name: chapter02-with-springboot-consumer
id: chapter02-with-springboot-consumer
registry:
address: multicast://224.5.6.7:1234
id: registry
protocol:
name: dubbo
port: 20880
server:
port: 8081
编写Controller
/**
* 消费者demo,
*
* @author fangjiaxiaobai
* @date 2021-10-13 21:00
*/
@RestController
public class ConsumerController {
@Resource
private ConsumerService consumerService;
@GetMapping("chapter02/sayHello/{name}")
public String sayHello(@PathVariable String name) {
return consumerService.sayHello(name);
}
}
编写Service层,调用提供提供者
/**
* 消费业务逻辑实现
*
* @author fangjiaxiaobai
* @date 2021-10-13 21:02
*/
@Service
public class ConsumerService {
// 引用Dubbo服务。使用@DubboReference注解
@DubboReference
private IProviderService providerService;
public String sayHello(String name) {
return providerService.sayHello(name);
}
}
编写启动类
@SpringBootApplication
@EnableDubbo
public class Chapter02ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(Chapter02ConsumerApplication.class, args);
}
}
启动后,可以看到控制台:

表示启动成功
测试
我们可以在浏览器中调用消费者的sayHello接口 http://localhost:8081/chapter02/sayHello/fangjiaxiaobai 就会看到 hello, fangjiaxiaobai. I am dubbo.
这样一个最最精简的Dubbo集成Springboot的服务就部署完成了。
链接
相关链接
最后
期望和你一起遇见更好的自己
